home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / PInterfaces / QD3DGeometry.p < prev    next >
Encoding:
Text File  |  1999-05-18  |  53.6 KB  |  1,054 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGeometry.p
  3.  
  4.      Contains:    Q3Geometry methods                                        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.0
  8.  
  9.      Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DGeometry;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DGEOMETRY__}
  27. {$SETC __QD3DGEOMETRY__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DGeometryIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37. {$IFC UNDEFINED __QD3DSET__}
  38. {$I QD3DSet.p}
  39. {$ENDC}
  40.  
  41.  
  42. {$PUSH}
  43. {$ALIGN POWER}
  44. {$LibExport+}
  45.  
  46. {*****************************************************************************
  47.  **                                                                             **
  48.  **                                Geometry Routines                             **
  49.  **                                                                             **
  50.  ****************************************************************************}
  51. FUNCTION Q3Geometry_GetType(geometry: TQ3GeometryObject): TQ3ObjectType; C;
  52. FUNCTION Q3Geometry_GetAttributeSet(geometry: TQ3GeometryObject; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  53. FUNCTION Q3Geometry_SetAttributeSet(geometry: TQ3GeometryObject; attributeSet: TQ3AttributeSet): TQ3Status; C;
  54. FUNCTION Q3Geometry_Submit(geometry: TQ3GeometryObject; view: TQ3ViewObject): TQ3Status; C;
  55.  
  56.  
  57. {*****************************************************************************
  58.  **                                                                             **
  59.  **                            Box    Data Structure Definitions                     **
  60.  **                                                                             **
  61.  ****************************************************************************}
  62.  
  63. TYPE
  64.     TQ3AttributeSetArray                = ARRAY [0..5] OF TQ3AttributeSet;
  65.     TQ3AttributeSetArrayPtr                = ^TQ3AttributeSetArray;
  66.     TQ3BoxDataPtr = ^TQ3BoxData;
  67.     TQ3BoxData = RECORD
  68.         origin:                    TQ3Point3D;
  69.         orientation:            TQ3Vector3D;
  70.         majorAxis:                TQ3Vector3D;
  71.         minorAxis:                TQ3Vector3D;
  72.         faceAttributeSet:        TQ3AttributeSetArrayPtr;                {  Ordering : Left, right,      }
  73.                                                                         {               front, back,      }
  74.                                                                         {               top, bottom     }
  75.         boxAttributeSet:        TQ3AttributeSet;
  76.     END;
  77.  
  78. {*****************************************************************************
  79.  **                                                                             **
  80.  **                                Box Routines                                 **
  81.  **                                                                             **
  82.  ****************************************************************************}
  83. FUNCTION Q3Box_New({CONST}VAR boxData: TQ3BoxData): TQ3GeometryObject; C;
  84. FUNCTION Q3Box_Submit({CONST}VAR boxData: TQ3BoxData; view: TQ3ViewObject): TQ3Status; C;
  85. FUNCTION Q3Box_SetData(box: TQ3GeometryObject; {CONST}VAR boxData: TQ3BoxData): TQ3Status; C;
  86. FUNCTION Q3Box_GetData(box: TQ3GeometryObject; VAR boxData: TQ3BoxData): TQ3Status; C;
  87. FUNCTION Q3Box_EmptyData(VAR boxData: TQ3BoxData): TQ3Status; C;
  88. FUNCTION Q3Box_SetOrigin(box: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  89. FUNCTION Q3Box_SetOrientation(box: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  90. FUNCTION Q3Box_SetMajorAxis(box: TQ3GeometryObject; {CONST}VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  91. FUNCTION Q3Box_SetMinorAxis(box: TQ3GeometryObject; {CONST}VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  92. FUNCTION Q3Box_GetOrigin(box: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  93. FUNCTION Q3Box_GetOrientation(box: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  94. FUNCTION Q3Box_GetMajorAxis(box: TQ3GeometryObject; VAR majorAxis: TQ3Vector3D): TQ3Status; C;
  95. FUNCTION Q3Box_GetMinorAxis(box: TQ3GeometryObject; VAR minorAxis: TQ3Vector3D): TQ3Status; C;
  96. FUNCTION Q3Box_GetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: UInt32; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  97. FUNCTION Q3Box_SetFaceAttributeSet(box: TQ3GeometryObject; faceIndex: UInt32; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  98.  
  99.  
  100. {*****************************************************************************
  101.  **                                                                             **
  102.  **                        Cone Data Structure Definitions                          **
  103.  **                                                                             **
  104.  ****************************************************************************}
  105.  
  106. TYPE
  107.     TQ3ConeDataPtr = ^TQ3ConeData;
  108.     TQ3ConeData = RECORD
  109.         origin:                    TQ3Point3D;
  110.         orientation:            TQ3Vector3D;
  111.         majorRadius:            TQ3Vector3D;
  112.         minorRadius:            TQ3Vector3D;
  113.         uMin:                    Single;
  114.         uMax:                    Single;
  115.         vMin:                    Single;
  116.         vMax:                    Single;
  117.         caps:                    TQ3EndCap;
  118.         interiorAttributeSet:    TQ3AttributeSet;
  119.         faceAttributeSet:        TQ3AttributeSet;
  120.         bottomAttributeSet:        TQ3AttributeSet;
  121.         coneAttributeSet:        TQ3AttributeSet;
  122.     END;
  123.  
  124. {*****************************************************************************
  125.  **                                                                             **
  126.  **                                Cone Routines                                 **
  127.  **                                                                             **
  128.  ****************************************************************************}
  129. FUNCTION Q3Cone_New({CONST}VAR coneData: TQ3ConeData): TQ3GeometryObject; C;
  130. FUNCTION Q3Cone_Submit({CONST}VAR coneData: TQ3ConeData; view: TQ3ViewObject): TQ3Status; C;
  131. FUNCTION Q3Cone_SetData(cone: TQ3GeometryObject; {CONST}VAR coneData: TQ3ConeData): TQ3Status; C;
  132. FUNCTION Q3Cone_GetData(cone: TQ3GeometryObject; VAR coneData: TQ3ConeData): TQ3Status; C;
  133. FUNCTION Q3Cone_SetOrigin(cone: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  134. FUNCTION Q3Cone_SetOrientation(cone: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  135. FUNCTION Q3Cone_SetMajorRadius(cone: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  136. FUNCTION Q3Cone_SetMinorRadius(cone: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  137. FUNCTION Q3Cone_GetOrigin(cone: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  138. FUNCTION Q3Cone_GetOrientation(cone: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  139. FUNCTION Q3Cone_GetMajorRadius(cone: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  140. FUNCTION Q3Cone_GetMinorRadius(cone: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  141. FUNCTION Q3Cone_SetCaps(cone: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  142. FUNCTION Q3Cone_GetCaps(cone: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  143. FUNCTION Q3Cone_SetBottomAttributeSet(cone: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  144. FUNCTION Q3Cone_GetBottomAttributeSet(cone: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  145. FUNCTION Q3Cone_SetFaceAttributeSet(cone: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  146. FUNCTION Q3Cone_GetFaceAttributeSet(cone: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  147. FUNCTION Q3Cone_EmptyData(VAR coneData: TQ3ConeData): TQ3Status; C;
  148.  
  149.  
  150.  
  151. {*****************************************************************************
  152.  **                                                                             **
  153.  **                        Cylinder Data Structure Definitions                     **
  154.  **                                                                             **
  155.  ****************************************************************************}
  156.  
  157. TYPE
  158.     TQ3CylinderDataPtr = ^TQ3CylinderData;
  159.     TQ3CylinderData = RECORD
  160.         origin:                    TQ3Point3D;
  161.         orientation:            TQ3Vector3D;
  162.         majorRadius:            TQ3Vector3D;
  163.         minorRadius:            TQ3Vector3D;
  164.         uMin:                    Single;
  165.         uMax:                    Single;
  166.         vMin:                    Single;
  167.         vMax:                    Single;
  168.         caps:                    TQ3EndCap;
  169.         interiorAttributeSet:    TQ3AttributeSet;
  170.         topAttributeSet:        TQ3AttributeSet;
  171.         faceAttributeSet:        TQ3AttributeSet;
  172.         bottomAttributeSet:        TQ3AttributeSet;
  173.         cylinderAttributeSet:    TQ3AttributeSet;
  174.     END;
  175.  
  176. {*****************************************************************************
  177.  **                                                                             **
  178.  **                            Cylinder Routines                                 **
  179.  **                                                                             **
  180.  ****************************************************************************}
  181. FUNCTION Q3Cylinder_New({CONST}VAR cylinderData: TQ3CylinderData): TQ3GeometryObject; C;
  182. FUNCTION Q3Cylinder_Submit({CONST}VAR cylinderData: TQ3CylinderData; view: TQ3ViewObject): TQ3Status; C;
  183. FUNCTION Q3Cylinder_SetData(cylinder: TQ3GeometryObject; {CONST}VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  184. FUNCTION Q3Cylinder_GetData(cylinder: TQ3GeometryObject; VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  185. FUNCTION Q3Cylinder_SetOrigin(cylinder: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  186. FUNCTION Q3Cylinder_SetOrientation(cylinder: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  187. FUNCTION Q3Cylinder_SetMajorRadius(cylinder: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  188. FUNCTION Q3Cylinder_SetMinorRadius(cylinder: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  189. FUNCTION Q3Cylinder_GetOrigin(cylinder: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  190. FUNCTION Q3Cylinder_GetOrientation(cylinder: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  191. FUNCTION Q3Cylinder_GetMajorRadius(cylinder: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  192. FUNCTION Q3Cylinder_GetMinorRadius(cylinder: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  193.  
  194. FUNCTION Q3Cylinder_SetCaps(cylinder: TQ3GeometryObject; caps: TQ3EndCap): TQ3Status; C;
  195. FUNCTION Q3Cylinder_GetCaps(cylinder: TQ3GeometryObject; VAR caps: TQ3EndCap): TQ3Status; C;
  196.  
  197. FUNCTION Q3Cylinder_SetTopAttributeSet(cylinder: TQ3GeometryObject; topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  198. FUNCTION Q3Cylinder_GetTopAttributeSet(cylinder: TQ3GeometryObject; VAR topAttributeSet: TQ3AttributeSet): TQ3Status; C;
  199. FUNCTION Q3Cylinder_SetBottomAttributeSet(cylinder: TQ3GeometryObject; bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  200. FUNCTION Q3Cylinder_GetBottomAttributeSet(cylinder: TQ3GeometryObject; VAR bottomAttributeSet: TQ3AttributeSet): TQ3Status; C;
  201. FUNCTION Q3Cylinder_SetFaceAttributeSet(cylinder: TQ3GeometryObject; faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  202. FUNCTION Q3Cylinder_GetFaceAttributeSet(cylinder: TQ3GeometryObject; VAR faceAttributeSet: TQ3AttributeSet): TQ3Status; C;
  203. FUNCTION Q3Cylinder_EmptyData(VAR cylinderData: TQ3CylinderData): TQ3Status; C;
  204.  
  205.  
  206.  
  207. {*****************************************************************************
  208.  **                                                                             **
  209.  **                        Disk Data Structure Definitions                         **
  210.  **                                                                             **
  211.  ****************************************************************************}
  212.  
  213. TYPE
  214.     TQ3DiskDataPtr = ^TQ3DiskData;
  215.     TQ3DiskData = RECORD
  216.         origin:                    TQ3Point3D;
  217.         majorRadius:            TQ3Vector3D;
  218.         minorRadius:            TQ3Vector3D;
  219.         uMin:                    Single;
  220.         uMax:                    Single;
  221.         vMin:                    Single;
  222.         vMax:                    Single;
  223.         diskAttributeSet:        TQ3AttributeSet;
  224.     END;
  225.  
  226. {*****************************************************************************
  227.  **                                                                             **
  228.  **                                Disk Routines                                  **
  229.  **                                                                             **
  230.  ****************************************************************************}
  231. FUNCTION Q3Disk_New({CONST}VAR diskData: TQ3DiskData): TQ3GeometryObject; C;
  232. FUNCTION Q3Disk_Submit({CONST}VAR diskData: TQ3DiskData; view: TQ3ViewObject): TQ3Status; C;
  233. FUNCTION Q3Disk_SetData(disk: TQ3GeometryObject; {CONST}VAR diskData: TQ3DiskData): TQ3Status; C;
  234. FUNCTION Q3Disk_GetData(disk: TQ3GeometryObject; VAR diskData: TQ3DiskData): TQ3Status; C;
  235. FUNCTION Q3Disk_SetOrigin(disk: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  236. FUNCTION Q3Disk_SetMajorRadius(disk: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  237. FUNCTION Q3Disk_SetMinorRadius(disk: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  238. FUNCTION Q3Disk_GetOrigin(disk: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  239. FUNCTION Q3Disk_GetMajorRadius(disk: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  240. FUNCTION Q3Disk_GetMinorRadius(disk: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  241.  
  242. FUNCTION Q3Disk_EmptyData(VAR diskData: TQ3DiskData): TQ3Status; C;
  243.  
  244.  
  245.  
  246. {*****************************************************************************
  247.  **                                                                             **
  248.  **                     Ellipse Data Structure Definitions                         **
  249.  **                                                                             **
  250.  ****************************************************************************}
  251.  
  252. TYPE
  253.     TQ3EllipseDataPtr = ^TQ3EllipseData;
  254.     TQ3EllipseData = RECORD
  255.         origin:                    TQ3Point3D;
  256.         majorRadius:            TQ3Vector3D;
  257.         minorRadius:            TQ3Vector3D;
  258.         uMin:                    Single;
  259.         uMax:                    Single;
  260.         ellipseAttributeSet:    TQ3AttributeSet;
  261.     END;
  262.  
  263. {*****************************************************************************
  264.  **                                                                             **
  265.  **                                Ellipse Routines                             **
  266.  **                                                                             **
  267.  ****************************************************************************}
  268. FUNCTION Q3Ellipse_New({CONST}VAR ellipseData: TQ3EllipseData): TQ3GeometryObject; C;
  269. FUNCTION Q3Ellipse_Submit({CONST}VAR ellipseData: TQ3EllipseData; view: TQ3ViewObject): TQ3Status; C;
  270. FUNCTION Q3Ellipse_SetData(ellipse: TQ3GeometryObject; {CONST}VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  271. FUNCTION Q3Ellipse_GetData(ellipse: TQ3GeometryObject; VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  272. FUNCTION Q3Ellipse_SetOrigin(ellipse: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  273. FUNCTION Q3Ellipse_SetMajorRadius(ellipse: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  274. FUNCTION Q3Ellipse_SetMinorRadius(ellipse: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  275. FUNCTION Q3Ellipse_GetOrigin(ellipse: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  276. FUNCTION Q3Ellipse_GetMajorRadius(ellipse: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  277. FUNCTION Q3Ellipse_GetMinorRadius(ellipse: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  278.  
  279. FUNCTION Q3Ellipse_EmptyData(VAR ellipseData: TQ3EllipseData): TQ3Status; C;
  280.  
  281.  
  282.  
  283. {*****************************************************************************
  284.  **                                                                          **
  285.  **                            Ellipsoid Data structures                         **
  286.  **                                                                          **
  287.  ****************************************************************************}
  288.  
  289. TYPE
  290.     TQ3EllipsoidDataPtr = ^TQ3EllipsoidData;
  291.     TQ3EllipsoidData = RECORD
  292.         origin:                    TQ3Point3D;
  293.         orientation:            TQ3Vector3D;
  294.         majorRadius:            TQ3Vector3D;
  295.         minorRadius:            TQ3Vector3D;
  296.         uMin:                    Single;
  297.         uMax:                    Single;
  298.         vMin:                    Single;
  299.         vMax:                    Single;
  300.         caps:                    TQ3EndCap;
  301.         interiorAttributeSet:    TQ3AttributeSet;
  302.         ellipsoidAttributeSet:    TQ3AttributeSet;
  303.     END;
  304.  
  305. {*****************************************************************************
  306.  **                                                                          **
  307.  **                            Ellipsoid Routines                                **
  308.  **                                                                          **
  309.  ****************************************************************************}
  310. FUNCTION Q3Ellipsoid_New({CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3GeometryObject; C;
  311. FUNCTION Q3Ellipsoid_Submit({CONST}VAR ellipsoidData: TQ3EllipsoidData; view: TQ3ViewObject): TQ3Status; C;
  312. FUNCTION Q3Ellipsoid_SetData(ellipsoid: TQ3GeometryObject; {CONST}VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  313. FUNCTION Q3Ellipsoid_GetData(ellipsoid: TQ3GeometryObject; VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  314. FUNCTION Q3Ellipsoid_SetOrigin(ellipsoid: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  315. FUNCTION Q3Ellipsoid_SetOrientation(ellipsoid: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  316. FUNCTION Q3Ellipsoid_SetMajorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  317. FUNCTION Q3Ellipsoid_SetMinorRadius(ellipsoid: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  318. FUNCTION Q3Ellipsoid_GetOrigin(ellipsoid: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  319. FUNCTION Q3Ellipsoid_GetOrientation(ellipsoid: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  320. FUNCTION Q3Ellipsoid_GetMajorRadius(ellipsoid: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  321. FUNCTION Q3Ellipsoid_GetMinorRadius(ellipsoid: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  322. FUNCTION Q3Ellipsoid_EmptyData(VAR ellipsoidData: TQ3EllipsoidData): TQ3Status; C;
  323.  
  324.  
  325.  
  326. {*****************************************************************************
  327.  **                                                                             **
  328.  **                    General Polygon Data Structure Definitions                 **
  329.  **                                                                             **
  330.  ****************************************************************************}
  331.  
  332. TYPE
  333.     TQ3GeneralPolygonShapeHint     = SInt32;
  334. CONST
  335.     kQ3GeneralPolygonShapeHintComplex = 0;
  336.     kQ3GeneralPolygonShapeHintConcave = 1;
  337.     kQ3GeneralPolygonShapeHintConvex = 2;
  338.  
  339.  
  340. TYPE
  341.     TQ3GeneralPolygonContourDataPtr = ^TQ3GeneralPolygonContourData;
  342.     TQ3GeneralPolygonContourData = RECORD
  343.         numVertices:            UInt32;
  344.         vertices:                TQ3Vertex3DPtr;
  345.     END;
  346.  
  347.     TQ3GeneralPolygonDataPtr = ^TQ3GeneralPolygonData;
  348.     TQ3GeneralPolygonData = RECORD
  349.         numContours:            UInt32;
  350.         contours:                TQ3GeneralPolygonContourDataPtr;
  351.         shapeHint:                TQ3GeneralPolygonShapeHint;
  352.         generalPolygonAttributeSet: TQ3AttributeSet;
  353.     END;
  354.  
  355. {*****************************************************************************
  356.  **                                                                             **
  357.  **                            General polygon Routines                         **
  358.  **                                                                             **
  359.  ****************************************************************************}
  360. FUNCTION Q3GeneralPolygon_New({CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3GeometryObject; C;
  361. FUNCTION Q3GeneralPolygon_Submit({CONST}VAR generalPolygonData: TQ3GeneralPolygonData; view: TQ3ViewObject): TQ3Status; C;
  362. FUNCTION Q3GeneralPolygon_SetData(generalPolygon: TQ3GeometryObject; {CONST}VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  363. FUNCTION Q3GeneralPolygon_GetData(polygon: TQ3GeometryObject; VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  364. FUNCTION Q3GeneralPolygon_EmptyData(VAR generalPolygonData: TQ3GeneralPolygonData): TQ3Status; C;
  365. FUNCTION Q3GeneralPolygon_GetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  366. FUNCTION Q3GeneralPolygon_SetVertexPosition(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  367. FUNCTION Q3GeneralPolygon_GetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  368. FUNCTION Q3GeneralPolygon_SetVertexAttributeSet(generalPolygon: TQ3GeometryObject; contourIndex: UInt32; pointIndex: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  369. FUNCTION Q3GeneralPolygon_SetShapeHint(generalPolygon: TQ3GeometryObject; shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  370. FUNCTION Q3GeneralPolygon_GetShapeHint(generalPolygon: TQ3GeometryObject; VAR shapeHint: TQ3GeneralPolygonShapeHint): TQ3Status; C;
  371.  
  372.  
  373.  
  374. {*****************************************************************************
  375.  **                                                                             **
  376.  **                        Line Data Structure Definitions                         **
  377.  **                                                                             **
  378.  ****************************************************************************}
  379.  
  380. TYPE
  381.     TQ3LineDataPtr = ^TQ3LineData;
  382.     TQ3LineData = RECORD
  383.         vertices:                ARRAY [0..1] OF TQ3Vertex3D;
  384.         lineAttributeSet:        TQ3AttributeSet;
  385.     END;
  386.  
  387. {*****************************************************************************
  388.  **                                                                             **
  389.  **                            Line Routines                                     **
  390.  **                                                                             **
  391.  ****************************************************************************}
  392. FUNCTION Q3Line_New({CONST}VAR lineData: TQ3LineData): TQ3GeometryObject; C;
  393. FUNCTION Q3Line_Submit({CONST}VAR lineData: TQ3LineData; view: TQ3ViewObject): TQ3Status; C;
  394. FUNCTION Q3Line_GetData(line: TQ3GeometryObject; VAR lineData: TQ3LineData): TQ3Status; C;
  395. FUNCTION Q3Line_SetData(line: TQ3GeometryObject; {CONST}VAR lineData: TQ3LineData): TQ3Status; C;
  396. FUNCTION Q3Line_GetVertexPosition(line: TQ3GeometryObject; index: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  397. FUNCTION Q3Line_SetVertexPosition(line: TQ3GeometryObject; index: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  398. FUNCTION Q3Line_GetVertexAttributeSet(line: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  399. FUNCTION Q3Line_SetVertexAttributeSet(line: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  400. FUNCTION Q3Line_EmptyData(VAR lineData: TQ3LineData): TQ3Status; C;
  401.  
  402.  
  403.  
  404. {*****************************************************************************
  405.  **                                                                             **
  406.  **                        Marker Data Structure Definitions                     **
  407.  **                                                                             **
  408.  ****************************************************************************}
  409.  
  410. TYPE
  411.     TQ3MarkerDataPtr = ^TQ3MarkerData;
  412.     TQ3MarkerData = RECORD
  413.         location:                TQ3Point3D;
  414.         xOffset:                LONGINT;
  415.         yOffset:                LONGINT;
  416.         bitmap:                    TQ3Bitmap;
  417.         markerAttributeSet:        TQ3AttributeSet;
  418.     END;
  419.  
  420. {*****************************************************************************
  421.  **                                                                             **
  422.  **                                Marker Routines                                 **
  423.  **                                                                             **
  424.  ****************************************************************************}
  425. FUNCTION Q3Marker_New({CONST}VAR markerData: TQ3MarkerData): TQ3GeometryObject; C;
  426. FUNCTION Q3Marker_Submit({CONST}VAR markerData: TQ3MarkerData; view: TQ3ViewObject): TQ3Status; C;
  427. FUNCTION Q3Marker_SetData(geometry: TQ3GeometryObject; {CONST}VAR markerData: TQ3MarkerData): TQ3Status; C;
  428. FUNCTION Q3Marker_GetData(geometry: TQ3GeometryObject; VAR markerData: TQ3MarkerData): TQ3Status; C;
  429. FUNCTION Q3Marker_EmptyData(VAR markerData: TQ3MarkerData): TQ3Status; C;
  430. FUNCTION Q3Marker_GetPosition(marker: TQ3GeometryObject; VAR location: TQ3Point3D): TQ3Status; C;
  431. FUNCTION Q3Marker_SetPosition(marker: TQ3GeometryObject; {CONST}VAR location: TQ3Point3D): TQ3Status; C;
  432. FUNCTION Q3Marker_GetXOffset(marker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  433. FUNCTION Q3Marker_SetXOffset(marker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  434. FUNCTION Q3Marker_GetYOffset(marker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  435. FUNCTION Q3Marker_SetYOffset(marker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  436. FUNCTION Q3Marker_GetBitmap(marker: TQ3GeometryObject; VAR bitmap: TQ3Bitmap): TQ3Status; C;
  437. FUNCTION Q3Marker_SetBitmap(marker: TQ3GeometryObject; {CONST}VAR bitmap: TQ3Bitmap): TQ3Status; C;
  438.  
  439.  
  440.  
  441. {*****************************************************************************
  442.  **                                                                             **
  443.  **                        Mesh Data Structure Definitions                         **
  444.  **                                                                             **
  445.  ****************************************************************************}
  446.  
  447. TYPE
  448.     TQ3MeshComponent = ^LONGINT;
  449.     TQ3MeshVertex = ^LONGINT;
  450.     TQ3MeshFace = ^LONGINT;
  451.     TQ3MeshEdge = ^LONGINT;
  452.     TQ3MeshContour = ^LONGINT;
  453. {*****************************************************************************
  454.  **                                                                             **
  455.  **                            Mesh Routines                                      **
  456.  **                                                                             **
  457.  ****************************************************************************}
  458. {
  459.  *  Constructors
  460.  }
  461. FUNCTION Q3Mesh_New: TQ3GeometryObject; C;
  462. FUNCTION Q3Mesh_VertexNew(mesh: TQ3GeometryObject; {CONST}VAR vertex: TQ3Vertex3D): TQ3MeshVertex; C;
  463. FUNCTION Q3Mesh_FaceNew(mesh: TQ3GeometryObject; numVertices: UInt32; {CONST}VAR vertices: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3MeshFace; C;
  464. {
  465.  *  Destructors
  466.  }
  467. FUNCTION Q3Mesh_VertexDelete(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex): TQ3Status; C;
  468. FUNCTION Q3Mesh_FaceDelete(mesh: TQ3GeometryObject; face: TQ3MeshFace): TQ3Status; C;
  469. {
  470.  * Methods
  471.  }
  472. FUNCTION Q3Mesh_DelayUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  473. FUNCTION Q3Mesh_ResumeUpdates(mesh: TQ3GeometryObject): TQ3Status; C;
  474. FUNCTION Q3Mesh_FaceToContour(mesh: TQ3GeometryObject; containerFace: TQ3MeshFace; face: TQ3MeshFace): TQ3MeshContour; C;
  475. FUNCTION Q3Mesh_ContourToFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour): TQ3MeshFace; C;
  476. {
  477.  * Mesh
  478.  }
  479. FUNCTION Q3Mesh_GetNumComponents(mesh: TQ3GeometryObject; VAR numComponents: UInt32): TQ3Status; C;
  480. FUNCTION Q3Mesh_GetNumEdges(mesh: TQ3GeometryObject; VAR numEdges: UInt32): TQ3Status; C;
  481. FUNCTION Q3Mesh_GetNumVertices(mesh: TQ3GeometryObject; VAR numVertices: UInt32): TQ3Status; C;
  482. FUNCTION Q3Mesh_GetNumFaces(mesh: TQ3GeometryObject; VAR numFaces: UInt32): TQ3Status; C;
  483. FUNCTION Q3Mesh_GetNumCorners(mesh: TQ3GeometryObject; VAR numCorners: UInt32): TQ3Status; C;
  484. FUNCTION Q3Mesh_GetOrientable(mesh: TQ3GeometryObject; VAR orientable: TQ3Boolean): TQ3Status; C;
  485. {
  486.  * Component
  487.  }
  488. FUNCTION Q3Mesh_GetComponentNumVertices(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numVertices: UInt32): TQ3Status; C;
  489. FUNCTION Q3Mesh_GetComponentNumEdges(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR numEdges: UInt32): TQ3Status; C;
  490. FUNCTION Q3Mesh_GetComponentBoundingBox(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR boundingBox: TQ3BoundingBox): TQ3Status; C;
  491. FUNCTION Q3Mesh_GetComponentOrientable(mesh: TQ3GeometryObject; component: TQ3MeshComponent; VAR orientable: TQ3Boolean): TQ3Status; C;
  492. {
  493.  * Vertex
  494.  }
  495. FUNCTION Q3Mesh_GetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR coordinates: TQ3Point3D): TQ3Status; C;
  496. FUNCTION Q3Mesh_GetVertexIndex(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR index: UInt32): TQ3Status; C;
  497. FUNCTION Q3Mesh_GetVertexOnBoundary(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  498. FUNCTION Q3Mesh_GetVertexComponent(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR component: TQ3MeshComponent): TQ3Status; C;
  499. FUNCTION Q3Mesh_GetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  500.  
  501. FUNCTION Q3Mesh_SetVertexCoordinates(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; {CONST}VAR coordinates: TQ3Point3D): TQ3Status; C;
  502. FUNCTION Q3Mesh_SetVertexAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; attributeSet: TQ3AttributeSet): TQ3Status; C;
  503.  
  504. {
  505.  * Face
  506.  }
  507. FUNCTION Q3Mesh_GetFaceNumVertices(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numVertices: UInt32): TQ3Status; C;
  508. FUNCTION Q3Mesh_GetFacePlaneEquation(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR planeEquation: TQ3PlaneEquation): TQ3Status; C;
  509. FUNCTION Q3Mesh_GetFaceNumContours(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR numContours: UInt32): TQ3Status; C;
  510. FUNCTION Q3Mesh_GetFaceIndex(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR index: UInt32): TQ3Status; C;
  511. FUNCTION Q3Mesh_GetFaceComponent(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR component: TQ3MeshComponent): TQ3Status; C;
  512. FUNCTION Q3Mesh_GetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  513.  
  514. FUNCTION Q3Mesh_SetFaceAttributeSet(mesh: TQ3GeometryObject; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  515. {
  516.  * Edge
  517.  }
  518. FUNCTION Q3Mesh_GetEdgeVertices(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR vertex1: TQ3MeshVertex; VAR vertex2: TQ3MeshVertex): TQ3Status; C;
  519. FUNCTION Q3Mesh_GetEdgeFaces(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR face1: TQ3MeshFace; VAR face2: TQ3MeshFace): TQ3Status; C;
  520. FUNCTION Q3Mesh_GetEdgeOnBoundary(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR onBoundary: TQ3Boolean): TQ3Status; C;
  521. FUNCTION Q3Mesh_GetEdgeComponent(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR component: TQ3MeshComponent): TQ3Status; C;
  522. FUNCTION Q3Mesh_GetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  523.  
  524. FUNCTION Q3Mesh_SetEdgeAttributeSet(mesh: TQ3GeometryObject; edge: TQ3MeshEdge; attributeSet: TQ3AttributeSet): TQ3Status; C;
  525. {
  526.  * Contour
  527.  }
  528. FUNCTION Q3Mesh_GetContourFace(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR face: TQ3MeshFace): TQ3Status; C;
  529. FUNCTION Q3Mesh_GetContourNumVertices(mesh: TQ3GeometryObject; contour: TQ3MeshContour; VAR numVertices: UInt32): TQ3Status; C;
  530. {
  531.  * Corner
  532.  }
  533. FUNCTION Q3Mesh_GetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  534. FUNCTION Q3Mesh_SetCornerAttributeSet(mesh: TQ3GeometryObject; vertex: TQ3MeshVertex; face: TQ3MeshFace; attributeSet: TQ3AttributeSet): TQ3Status; C;
  535.  
  536. {
  537.  * Public Mesh Iterators
  538.  }
  539.  
  540. TYPE
  541.     TQ3MeshIteratorPtr = ^TQ3MeshIterator;
  542.     TQ3MeshIterator = RECORD
  543.         var1:                    Ptr;
  544.         var2:                    Ptr;
  545.         var3:                    Ptr;
  546.         field1:                    Ptr;
  547.         field2:                    PACKED ARRAY [0..3] OF CHAR;
  548.     END;
  549.  
  550. FUNCTION Q3Mesh_FirstMeshComponent(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  551. FUNCTION Q3Mesh_NextMeshComponent(VAR iterator: TQ3MeshIterator): TQ3MeshComponent; C;
  552. FUNCTION Q3Mesh_FirstComponentVertex(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  553. FUNCTION Q3Mesh_NextComponentVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  554. FUNCTION Q3Mesh_FirstComponentEdge(component: TQ3MeshComponent; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  555. FUNCTION Q3Mesh_NextComponentEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  556. FUNCTION Q3Mesh_FirstMeshVertex(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  557. FUNCTION Q3Mesh_NextMeshVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  558. FUNCTION Q3Mesh_FirstMeshFace(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  559. FUNCTION Q3Mesh_NextMeshFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  560. FUNCTION Q3Mesh_FirstMeshEdge(mesh: TQ3GeometryObject; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  561. FUNCTION Q3Mesh_NextMeshEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  562. FUNCTION Q3Mesh_FirstVertexEdge(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  563. FUNCTION Q3Mesh_NextVertexEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  564. FUNCTION Q3Mesh_FirstVertexVertex(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  565. FUNCTION Q3Mesh_NextVertexVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  566. FUNCTION Q3Mesh_FirstVertexFace(vertex: TQ3MeshVertex; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  567. FUNCTION Q3Mesh_NextVertexFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  568. FUNCTION Q3Mesh_FirstFaceEdge(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  569. FUNCTION Q3Mesh_NextFaceEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  570. FUNCTION Q3Mesh_FirstFaceVertex(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  571. FUNCTION Q3Mesh_NextFaceVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  572. FUNCTION Q3Mesh_FirstFaceFace(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  573. FUNCTION Q3Mesh_NextFaceFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  574. FUNCTION Q3Mesh_FirstFaceContour(face: TQ3MeshFace; VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  575. FUNCTION Q3Mesh_NextFaceContour(VAR iterator: TQ3MeshIterator): TQ3MeshContour; C;
  576. FUNCTION Q3Mesh_FirstContourEdge(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  577. FUNCTION Q3Mesh_NextContourEdge(VAR iterator: TQ3MeshIterator): TQ3MeshEdge; C;
  578. FUNCTION Q3Mesh_FirstContourVertex(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  579. FUNCTION Q3Mesh_NextContourVertex(VAR iterator: TQ3MeshIterator): TQ3MeshVertex; C;
  580. FUNCTION Q3Mesh_FirstContourFace(contour: TQ3MeshContour; VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  581. FUNCTION Q3Mesh_NextContourFace(VAR iterator: TQ3MeshIterator): TQ3MeshFace; C;
  582.  
  583.  
  584. {*****************************************************************************
  585.  **                                                                             **
  586.  **                            Maximum order for NURB Curves                     **
  587.  **                                                                             **
  588.  ****************************************************************************}
  589.  
  590. {*****************************************************************************
  591.  **                                                                             **
  592.  **                        NURB Data Structure Definitions                         **
  593.  **                                                                             **
  594.  ****************************************************************************}
  595.  
  596. TYPE
  597.     TQ3NURBCurveDataPtr = ^TQ3NURBCurveData;
  598.     TQ3NURBCurveData = RECORD
  599.         order:                    UInt32;
  600.         numPoints:                UInt32;
  601.         controlPoints:            TQ3RationalPoint4DPtr;
  602.         knots:                    ^Single;
  603.         curveAttributeSet:        TQ3AttributeSet;
  604.     END;
  605.  
  606. {*****************************************************************************
  607.  **                                                                             **
  608.  **                                NURB Curve Routines                             **
  609.  **                                                                             **
  610.  ****************************************************************************}
  611. FUNCTION Q3NURBCurve_New({CONST}VAR curveData: TQ3NURBCurveData): TQ3GeometryObject; C;
  612. FUNCTION Q3NURBCurve_Submit({CONST}VAR curveData: TQ3NURBCurveData; view: TQ3ViewObject): TQ3Status; C;
  613. FUNCTION Q3NURBCurve_SetData(curve: TQ3GeometryObject; {CONST}VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  614. FUNCTION Q3NURBCurve_GetData(curve: TQ3GeometryObject; VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  615. FUNCTION Q3NURBCurve_EmptyData(VAR nurbCurveData: TQ3NURBCurveData): TQ3Status; C;
  616. FUNCTION Q3NURBCurve_SetControlPoint(curve: TQ3GeometryObject; pointIndex: UInt32; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  617. FUNCTION Q3NURBCurve_GetControlPoint(curve: TQ3GeometryObject; pointIndex: UInt32; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  618. FUNCTION Q3NURBCurve_SetKnot(curve: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  619. FUNCTION Q3NURBCurve_GetKnot(curve: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  620.  
  621. {*****************************************************************************
  622.  **                                                                             **
  623.  **                            Maximum NURB Patch Order                         **
  624.  **                                                                             **
  625.  ****************************************************************************}
  626. {*****************************************************************************
  627.  **                                                                             **
  628.  **                        NURB Patch Data Structure Definitions                 **
  629.  **                                                                             **
  630.  ****************************************************************************}
  631.  
  632. TYPE
  633.     TQ3NURBPatchTrimCurveDataPtr = ^TQ3NURBPatchTrimCurveData;
  634.     TQ3NURBPatchTrimCurveData = RECORD
  635.         order:                    UInt32;
  636.         numPoints:                UInt32;
  637.         controlPoints:            TQ3RationalPoint3DPtr;
  638.         knots:                    ^Single;
  639.     END;
  640.  
  641.     TQ3NURBPatchTrimLoopDataPtr = ^TQ3NURBPatchTrimLoopData;
  642.     TQ3NURBPatchTrimLoopData = RECORD
  643.         numTrimCurves:            UInt32;
  644.         trimCurves:                TQ3NURBPatchTrimCurveDataPtr;
  645.     END;
  646.  
  647.     TQ3NURBPatchDataPtr = ^TQ3NURBPatchData;
  648.     TQ3NURBPatchData = RECORD
  649.         uOrder:                    UInt32;
  650.         vOrder:                    UInt32;
  651.         numRows:                UInt32;
  652.         numColumns:                UInt32;
  653.         controlPoints:            TQ3RationalPoint4DPtr;
  654.         uKnots:                    ^Single;
  655.         vKnots:                    ^Single;
  656.         numTrimLoops:            UInt32;
  657.         trimLoops:                TQ3NURBPatchTrimLoopDataPtr;
  658.         patchAttributeSet:        TQ3AttributeSet;
  659.     END;
  660.  
  661. {*****************************************************************************
  662.  **                                                                             **
  663.  **                                NURB Patch Routines                             **
  664.  **                                                                             **
  665.  ****************************************************************************}
  666. FUNCTION Q3NURBPatch_New({CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3GeometryObject; C;
  667. FUNCTION Q3NURBPatch_Submit({CONST}VAR nurbPatchData: TQ3NURBPatchData; view: TQ3ViewObject): TQ3Status; C;
  668. FUNCTION Q3NURBPatch_SetData(nurbPatch: TQ3GeometryObject; {CONST}VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  669. FUNCTION Q3NURBPatch_GetData(nurbPatch: TQ3GeometryObject; VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  670. FUNCTION Q3NURBPatch_SetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; {CONST}VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  671. FUNCTION Q3NURBPatch_GetControlPoint(nurbPatch: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR point4D: TQ3RationalPoint4D): TQ3Status; C;
  672. FUNCTION Q3NURBPatch_SetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  673. FUNCTION Q3NURBPatch_SetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; knotValue: Single): TQ3Status; C;
  674. FUNCTION Q3NURBPatch_GetUKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  675. FUNCTION Q3NURBPatch_GetVKnot(nurbPatch: TQ3GeometryObject; knotIndex: UInt32; VAR knotValue: Single): TQ3Status; C;
  676. FUNCTION Q3NURBPatch_EmptyData(VAR nurbPatchData: TQ3NURBPatchData): TQ3Status; C;
  677.  
  678.  
  679.  
  680. {*****************************************************************************
  681.  **                                                                             **
  682.  **                        Pixmap Marker Data Structure Definitions             **
  683.  **                                                                             **
  684.  ****************************************************************************}
  685.  
  686. TYPE
  687.     TQ3PixmapMarkerDataPtr = ^TQ3PixmapMarkerData;
  688.     TQ3PixmapMarkerData = RECORD
  689.         position:                TQ3Point3D;
  690.         xOffset:                LONGINT;
  691.         yOffset:                LONGINT;
  692.         pixmap:                    TQ3StoragePixmap;
  693.         pixmapMarkerAttributeSet: TQ3AttributeSet;
  694.     END;
  695.  
  696. {*****************************************************************************
  697.  **                                                                             **
  698.  **                                Pixmap Marker Routines                         **
  699.  **                                                                             **
  700.  ****************************************************************************}
  701. FUNCTION Q3PixmapMarker_New({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3GeometryObject; C;
  702. FUNCTION Q3PixmapMarker_Submit({CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData; view: TQ3ViewObject): TQ3Status; C;
  703. FUNCTION Q3PixmapMarker_SetData(geometry: TQ3GeometryObject; {CONST}VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  704. FUNCTION Q3PixmapMarker_GetData(geometry: TQ3GeometryObject; VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  705. FUNCTION Q3PixmapMarker_EmptyData(VAR pixmapMarkerData: TQ3PixmapMarkerData): TQ3Status; C;
  706. FUNCTION Q3PixmapMarker_GetPosition(pixmapMarker: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  707. FUNCTION Q3PixmapMarker_SetPosition(pixmapMarker: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  708. FUNCTION Q3PixmapMarker_GetXOffset(pixmapMarker: TQ3GeometryObject; VAR xOffset: LONGINT): TQ3Status; C;
  709. FUNCTION Q3PixmapMarker_SetXOffset(pixmapMarker: TQ3GeometryObject; xOffset: LONGINT): TQ3Status; C;
  710. FUNCTION Q3PixmapMarker_GetYOffset(pixmapMarker: TQ3GeometryObject; VAR yOffset: LONGINT): TQ3Status; C;
  711. FUNCTION Q3PixmapMarker_SetYOffset(pixmapMarker: TQ3GeometryObject; yOffset: LONGINT): TQ3Status; C;
  712. FUNCTION Q3PixmapMarker_GetPixmap(pixmapMarker: TQ3GeometryObject; VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  713. FUNCTION Q3PixmapMarker_SetPixmap(pixmapMarker: TQ3GeometryObject; {CONST}VAR pixmap: TQ3StoragePixmap): TQ3Status; C;
  714.  
  715.  
  716.  
  717. {*****************************************************************************
  718.  **                                                                             **
  719.  **                        Point Data Structure Definitions                     **
  720.  **                                                                             **
  721.  ****************************************************************************}
  722.  
  723. TYPE
  724.     TQ3PointDataPtr = ^TQ3PointData;
  725.     TQ3PointData = RECORD
  726.         point:                    TQ3Point3D;
  727.         pointAttributeSet:        TQ3AttributeSet;
  728.     END;
  729.  
  730. {*****************************************************************************
  731.  **                                                                             **
  732.  **                                Point Routines                                 **
  733.  **                                                                             **
  734.  ****************************************************************************}
  735. FUNCTION Q3Point_New({CONST}VAR pointData: TQ3PointData): TQ3GeometryObject; C;
  736. FUNCTION Q3Point_Submit({CONST}VAR pointData: TQ3PointData; view: TQ3ViewObject): TQ3Status; C;
  737. FUNCTION Q3Point_GetData(point: TQ3GeometryObject; VAR pointData: TQ3PointData): TQ3Status; C;
  738. FUNCTION Q3Point_SetData(point: TQ3GeometryObject; {CONST}VAR pointData: TQ3PointData): TQ3Status; C;
  739. FUNCTION Q3Point_EmptyData(VAR pointData: TQ3PointData): TQ3Status; C;
  740. FUNCTION Q3Point_SetPosition(point: TQ3GeometryObject; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  741. FUNCTION Q3Point_GetPosition(point: TQ3GeometryObject; VAR position: TQ3Point3D): TQ3Status; C;
  742.  
  743.  
  744.  
  745. {*****************************************************************************
  746.  **                                                                             **
  747.  **                        Polygon Data Structure Definitions                     **
  748.  **                                                                             **
  749.  ****************************************************************************}
  750.  
  751. TYPE
  752.     TQ3PolygonDataPtr = ^TQ3PolygonData;
  753.     TQ3PolygonData = RECORD
  754.         numVertices:            UInt32;
  755.         vertices:                TQ3Vertex3DPtr;
  756.         polygonAttributeSet:    TQ3AttributeSet;
  757.     END;
  758.  
  759. {*****************************************************************************
  760.  **                                                                             **
  761.  **                            Polygon Routines                                 **
  762.  **                                                                             **
  763.  ****************************************************************************}
  764. FUNCTION Q3Polygon_New({CONST}VAR polygonData: TQ3PolygonData): TQ3GeometryObject; C;
  765. FUNCTION Q3Polygon_Submit({CONST}VAR polygonData: TQ3PolygonData; view: TQ3ViewObject): TQ3Status; C;
  766. FUNCTION Q3Polygon_SetData(polygon: TQ3GeometryObject; {CONST}VAR polygonData: TQ3PolygonData): TQ3Status; C;
  767. FUNCTION Q3Polygon_GetData(polygon: TQ3GeometryObject; VAR polygonData: TQ3PolygonData): TQ3Status; C;
  768. FUNCTION Q3Polygon_EmptyData(VAR polygonData: TQ3PolygonData): TQ3Status; C;
  769. FUNCTION Q3Polygon_GetVertexPosition(polygon: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  770. FUNCTION Q3Polygon_SetVertexPosition(polygon: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  771. FUNCTION Q3Polygon_GetVertexAttributeSet(polygon: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  772. FUNCTION Q3Polygon_SetVertexAttributeSet(polygon: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  773.  
  774.  
  775.  
  776. {*****************************************************************************
  777.  **                                                                             **
  778.  **                        Polyhedron Data Structure Definitions                 **
  779.  **                                                                             **
  780.  ****************************************************************************}
  781.  
  782. TYPE
  783.     TQ3PolyhedronEdgeMasks         = SInt32;
  784. CONST
  785.     kQ3PolyhedronEdgeNone        = 0;
  786.     kQ3PolyhedronEdge01            = $01;
  787.     kQ3PolyhedronEdge12            = $02;
  788.     kQ3PolyhedronEdge20            = $04;
  789.     kQ3PolyhedronEdgeAll        = $07;
  790.  
  791.  
  792. TYPE
  793.     TQ3PolyhedronEdge                    = UInt32;
  794.     TQ3PolyhedronEdgeDataPtr = ^TQ3PolyhedronEdgeData;
  795.     TQ3PolyhedronEdgeData = RECORD
  796.         vertexIndices:            ARRAY [0..1] OF UInt32;
  797.         triangleIndices:        ARRAY [0..1] OF UInt32;
  798.         edgeAttributeSet:        TQ3AttributeSet;
  799.     END;
  800.  
  801.     TQ3PolyhedronTriangleDataPtr = ^TQ3PolyhedronTriangleData;
  802.     TQ3PolyhedronTriangleData = RECORD
  803.         vertexIndices:            ARRAY [0..2] OF UInt32;
  804.         edgeFlag:                TQ3PolyhedronEdge;
  805.         triangleAttributeSet:    TQ3AttributeSet;
  806.     END;
  807.  
  808.     TQ3PolyhedronDataPtr = ^TQ3PolyhedronData;
  809.     TQ3PolyhedronData = RECORD
  810.         numVertices:            UInt32;
  811.         vertices:                TQ3Vertex3DPtr;
  812.         numEdges:                UInt32;
  813.         edges:                    TQ3PolyhedronEdgeDataPtr;
  814.         numTriangles:            UInt32;
  815.         triangles:                TQ3PolyhedronTriangleDataPtr;
  816.         polyhedronAttributeSet:    TQ3AttributeSet;
  817.     END;
  818.  
  819. {*****************************************************************************
  820.  **                                                                             **
  821.  **                                Polyhedron Routines                             **
  822.  **                                                                             **
  823.  ****************************************************************************}
  824. FUNCTION Q3Polyhedron_New({CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3GeometryObject; C;
  825. FUNCTION Q3Polyhedron_Submit({CONST}VAR polyhedronData: TQ3PolyhedronData; view: TQ3ViewObject): TQ3Status; C;
  826. FUNCTION Q3Polyhedron_SetData(polyhedron: TQ3GeometryObject; {CONST}VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  827. FUNCTION Q3Polyhedron_GetData(polyhedron: TQ3GeometryObject; VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  828. FUNCTION Q3Polyhedron_EmptyData(VAR polyhedronData: TQ3PolyhedronData): TQ3Status; C;
  829. FUNCTION Q3Polyhedron_SetVertexPosition(polyhedron: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  830. FUNCTION Q3Polyhedron_GetVertexPosition(polyhedron: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  831. FUNCTION Q3Polyhedron_SetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  832. FUNCTION Q3Polyhedron_GetVertexAttributeSet(polyhedron: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  833. FUNCTION Q3Polyhedron_GetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: UInt32; VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  834. FUNCTION Q3Polyhedron_SetTriangleData(polyhedron: TQ3GeometryObject; triangleIndex: UInt32; {CONST}VAR triangleData: TQ3PolyhedronTriangleData): TQ3Status; C;
  835. FUNCTION Q3Polyhedron_GetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: UInt32; VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  836. FUNCTION Q3Polyhedron_SetEdgeData(polyhedron: TQ3GeometryObject; edgeIndex: UInt32; {CONST}VAR edgeData: TQ3PolyhedronEdgeData): TQ3Status; C;
  837.  
  838.  
  839.  
  840. {*****************************************************************************
  841.  **                                                                             **
  842.  **                        PolyLine Data Structure Definitions                     **
  843.  **                                                                             **
  844.  ****************************************************************************}
  845.  
  846. TYPE
  847.     TQ3PolyLineDataPtr = ^TQ3PolyLineData;
  848.     TQ3PolyLineData = RECORD
  849.         numVertices:            UInt32;
  850.         vertices:                TQ3Vertex3DPtr;
  851.         segmentAttributeSet:    TQ3AttributeSetPtr;
  852.         polyLineAttributeSet:    TQ3AttributeSet;
  853.     END;
  854.  
  855. {*****************************************************************************
  856.  **                                                                             **
  857.  **                            PolyLine Routines                                 **
  858.  **                                                                             **
  859.  ****************************************************************************}
  860. FUNCTION Q3PolyLine_New({CONST}VAR polylineData: TQ3PolyLineData): TQ3GeometryObject; C;
  861. FUNCTION Q3PolyLine_Submit({CONST}VAR polyLineData: TQ3PolyLineData; view: TQ3ViewObject): TQ3Status; C;
  862. FUNCTION Q3PolyLine_SetData(polyLine: TQ3GeometryObject; {CONST}VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  863. FUNCTION Q3PolyLine_GetData(polyLine: TQ3GeometryObject; VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  864. FUNCTION Q3PolyLine_EmptyData(VAR polyLineData: TQ3PolyLineData): TQ3Status; C;
  865. FUNCTION Q3PolyLine_GetVertexPosition(polyLine: TQ3GeometryObject; index: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  866. FUNCTION Q3PolyLine_SetVertexPosition(polyLine: TQ3GeometryObject; index: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  867. FUNCTION Q3PolyLine_GetVertexAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  868. FUNCTION Q3PolyLine_SetVertexAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  869. FUNCTION Q3PolyLine_GetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  870. FUNCTION Q3PolyLine_SetSegmentAttributeSet(polyLine: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  871.  
  872.  
  873.  
  874.  
  875. {*****************************************************************************
  876.  **                                                                             **
  877.  **                        Torus Data Structure Definitions                     **
  878.  **                                                                             **
  879.  ****************************************************************************}
  880.  
  881. TYPE
  882.     TQ3TorusDataPtr = ^TQ3TorusData;
  883.     TQ3TorusData = RECORD
  884.         origin:                    TQ3Point3D;
  885.         orientation:            TQ3Vector3D;
  886.         majorRadius:            TQ3Vector3D;
  887.         minorRadius:            TQ3Vector3D;
  888.         ratio:                    Single;
  889.         uMin:                    Single;
  890.         uMax:                    Single;
  891.         vMin:                    Single;
  892.         vMax:                    Single;
  893.         caps:                    TQ3EndCap;
  894.         interiorAttributeSet:    TQ3AttributeSet;
  895.         torusAttributeSet:        TQ3AttributeSet;
  896.     END;
  897.  
  898. {*****************************************************************************
  899.  **                                                                             **
  900.  **                                Torus Routines                                 **
  901.  **                                                                             **
  902.  ****************************************************************************}
  903. FUNCTION Q3Torus_New({CONST}VAR torusData: TQ3TorusData): TQ3GeometryObject; C;
  904. FUNCTION Q3Torus_Submit({CONST}VAR torusData: TQ3TorusData; view: TQ3ViewObject): TQ3Status; C;
  905. FUNCTION Q3Torus_SetData(torus: TQ3GeometryObject; {CONST}VAR torusData: TQ3TorusData): TQ3Status; C;
  906. FUNCTION Q3Torus_GetData(torus: TQ3GeometryObject; VAR torusData: TQ3TorusData): TQ3Status; C;
  907. FUNCTION Q3Torus_SetOrigin(torus: TQ3GeometryObject; {CONST}VAR origin: TQ3Point3D): TQ3Status; C;
  908. FUNCTION Q3Torus_SetOrientation(torus: TQ3GeometryObject; {CONST}VAR orientation: TQ3Vector3D): TQ3Status; C;
  909. FUNCTION Q3Torus_SetMajorRadius(torus: TQ3GeometryObject; {CONST}VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  910. FUNCTION Q3Torus_SetMinorRadius(torus: TQ3GeometryObject; {CONST}VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  911. FUNCTION Q3Torus_SetRatio(torus: TQ3GeometryObject; ratio: Single): TQ3Status; C;
  912. FUNCTION Q3Torus_GetOrigin(torus: TQ3GeometryObject; VAR origin: TQ3Point3D): TQ3Status; C;
  913. FUNCTION Q3Torus_GetOrientation(torus: TQ3GeometryObject; VAR orientation: TQ3Vector3D): TQ3Status; C;
  914. FUNCTION Q3Torus_GetMajorRadius(torus: TQ3GeometryObject; VAR majorRadius: TQ3Vector3D): TQ3Status; C;
  915. FUNCTION Q3Torus_GetMinorRadius(torus: TQ3GeometryObject; VAR minorRadius: TQ3Vector3D): TQ3Status; C;
  916. FUNCTION Q3Torus_GetRatio(torus: TQ3GeometryObject; VAR ratio: Single): TQ3Status; C;
  917. FUNCTION Q3Torus_EmptyData(VAR torusData: TQ3TorusData): TQ3Status; C;
  918.  
  919.  
  920.  
  921. {*****************************************************************************
  922.  **                                                                             **
  923.  **                        Triangle Data Structure Definitions                     **
  924.  **                                                                             **
  925.  ****************************************************************************}
  926.  
  927. TYPE
  928.     TQ3TriangleDataPtr = ^TQ3TriangleData;
  929.     TQ3TriangleData = RECORD
  930.         vertices:                ARRAY [0..2] OF TQ3Vertex3D;
  931.         triangleAttributeSet:    TQ3AttributeSet;
  932.     END;
  933.  
  934. {*****************************************************************************
  935.  **                                                                             **
  936.  **                            Triangle Routines                                 **
  937.  **                                                                             **
  938.  ****************************************************************************}
  939. FUNCTION Q3Triangle_New({CONST}VAR triangleData: TQ3TriangleData): TQ3GeometryObject; C;
  940. FUNCTION Q3Triangle_Submit({CONST}VAR triangleData: TQ3TriangleData; view: TQ3ViewObject): TQ3Status; C;
  941. FUNCTION Q3Triangle_SetData(triangle: TQ3GeometryObject; {CONST}VAR triangleData: TQ3TriangleData): TQ3Status; C;
  942. FUNCTION Q3Triangle_GetData(triangle: TQ3GeometryObject; VAR triangleData: TQ3TriangleData): TQ3Status; C;
  943. FUNCTION Q3Triangle_EmptyData(VAR triangleData: TQ3TriangleData): TQ3Status; C;
  944. FUNCTION Q3Triangle_GetVertexPosition(triangle: TQ3GeometryObject; index: UInt32; VAR point: TQ3Point3D): TQ3Status; C;
  945. FUNCTION Q3Triangle_SetVertexPosition(triangle: TQ3GeometryObject; index: UInt32; {CONST}VAR point: TQ3Point3D): TQ3Status; C;
  946. FUNCTION Q3Triangle_GetVertexAttributeSet(triangle: TQ3GeometryObject; index: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  947. FUNCTION Q3Triangle_SetVertexAttributeSet(triangle: TQ3GeometryObject; index: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  948.  
  949.  
  950.  
  951. {*****************************************************************************
  952.  **                                                                             **
  953.  **                        TriGrid Data Structure Definitions                     **
  954.  **                                                                             **
  955.  ****************************************************************************}
  956.  
  957. TYPE
  958.     TQ3TriGridDataPtr = ^TQ3TriGridData;
  959.     TQ3TriGridData = RECORD
  960.         numRows:                UInt32;
  961.         numColumns:                UInt32;
  962.         vertices:                TQ3Vertex3DPtr;
  963.         facetAttributeSet:        TQ3AttributeSetPtr;
  964.         triGridAttributeSet:    TQ3AttributeSet;
  965.     END;
  966.  
  967. {*****************************************************************************
  968.  **                                                                             **
  969.  **                                TriGrid Routines                             **
  970.  **                                                                             **
  971.  ****************************************************************************}
  972. FUNCTION Q3TriGrid_New({CONST}VAR triGridData: TQ3TriGridData): TQ3GeometryObject; C;
  973. FUNCTION Q3TriGrid_Submit({CONST}VAR triGridData: TQ3TriGridData; view: TQ3ViewObject): TQ3Status; C;
  974. FUNCTION Q3TriGrid_SetData(triGrid: TQ3GeometryObject; {CONST}VAR triGridData: TQ3TriGridData): TQ3Status; C;
  975. FUNCTION Q3TriGrid_GetData(triGrid: TQ3GeometryObject; VAR triGridData: TQ3TriGridData): TQ3Status; C;
  976. FUNCTION Q3TriGrid_EmptyData(VAR triGridData: TQ3TriGridData): TQ3Status; C;
  977. FUNCTION Q3TriGrid_GetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR position: TQ3Point3D): TQ3Status; C;
  978. FUNCTION Q3TriGrid_SetVertexPosition(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; {CONST}VAR position: TQ3Point3D): TQ3Status; C;
  979. FUNCTION Q3TriGrid_GetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; VAR attributeSet: TQ3AttributeSet): TQ3Status; C;
  980. FUNCTION Q3TriGrid_SetVertexAttributeSet(triGrid: TQ3GeometryObject; rowIndex: UInt32; columnIndex: UInt32; attributeSet: TQ3AttributeSet): TQ3Status; C;
  981. FUNCTION Q3TriGrid_GetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: UInt32; VAR facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  982. FUNCTION Q3TriGrid_SetFacetAttributeSet(triGrid: TQ3GeometryObject; faceIndex: UInt32; facetAttributeSet: TQ3AttributeSet): TQ3Status; C;
  983.  
  984.  
  985.  
  986. {*****************************************************************************
  987.  **                                                                             **
  988.  **                        TriMesh Data Structure Definitions                     **
  989.  **                                                                             **
  990.  ****************************************************************************}
  991.  
  992. TYPE
  993.     TQ3TriMeshTriangleDataPtr = ^TQ3TriMeshTriangleData;
  994.     TQ3TriMeshTriangleData = RECORD
  995.         pointIndices:            ARRAY [0..2] OF UInt32;
  996.     END;
  997.  
  998.     TQ3TriMeshEdgeDataPtr = ^TQ3TriMeshEdgeData;
  999.     TQ3TriMeshEdgeData = RECORD
  1000.         pointIndices:            ARRAY [0..1] OF UInt32;
  1001.         triangleIndices:        ARRAY [0..1] OF UInt32;
  1002.     END;
  1003.  
  1004.     TQ3TriMeshAttributeDataPtr = ^TQ3TriMeshAttributeData;
  1005.     TQ3TriMeshAttributeData = RECORD
  1006.         attributeType:            TQ3AttributeType;                        {  The type of attribute           }
  1007.         data:                    Ptr;                                    {  Pointer to the contiguous      }
  1008.                                                                         {  attribute data.                  }
  1009.         attributeUseArray:        CStringPtr;                                {  This is only used with custom  }
  1010.                                                                         {  attributes                       }
  1011.     END;
  1012.  
  1013.     TQ3TriMeshDataPtr = ^TQ3TriMeshData;
  1014.     TQ3TriMeshData = RECORD
  1015.         triMeshAttributeSet:    TQ3AttributeSet;
  1016.         numTriangles:            UInt32;
  1017.         triangles:                TQ3TriMeshTriangleDataPtr;
  1018.         numTriangleAttributeTypes: UInt32;
  1019.         triangleAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1020.         numEdges:                UInt32;
  1021.         edges:                    TQ3TriMeshEdgeDataPtr;
  1022.         numEdgeAttributeTypes:    UInt32;
  1023.         edgeAttributeTypes:        TQ3TriMeshAttributeDataPtr;
  1024.         numPoints:                UInt32;
  1025.         points:                    TQ3Point3DPtr;
  1026.         numVertexAttributeTypes: UInt32;
  1027.         vertexAttributeTypes:    TQ3TriMeshAttributeDataPtr;
  1028.         bBox:                    TQ3BoundingBox;
  1029.     END;
  1030.  
  1031. {*****************************************************************************
  1032.  **                                                                             **
  1033.  **                            TriMesh Routines                                 **
  1034.  **                                                                             **
  1035.  ****************************************************************************}
  1036. FUNCTION Q3TriMesh_New({CONST}VAR triMeshData: TQ3TriMeshData): TQ3GeometryObject; C;
  1037. FUNCTION Q3TriMesh_Submit({CONST}VAR triMeshData: TQ3TriMeshData; view: TQ3ViewObject): TQ3Status; C;
  1038. FUNCTION Q3TriMesh_SetData(triMesh: TQ3GeometryObject; {CONST}VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1039. FUNCTION Q3TriMesh_GetData(triMesh: TQ3GeometryObject; VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1040. FUNCTION Q3TriMesh_EmptyData(VAR triMeshData: TQ3TriMeshData): TQ3Status; C;
  1041.  
  1042.  
  1043.  
  1044. {$ALIGN RESET}
  1045. {$POP}
  1046.  
  1047. {$SETC UsingIncludes := QD3DGeometryIncludes}
  1048.  
  1049. {$ENDC} {__QD3DGEOMETRY__}
  1050.  
  1051. {$IFC NOT UsingIncludes}
  1052.  END.
  1053. {$ENDC}
  1054.